package config

import (
	"encoding/json"
	"io/ioutil"
)

type Config_ck struct {
	InstanceName string `json:"instanceName"`
	Ht           string `json:"ht"`
	Host         string `json:"host"`
	Port         string `json:"port"`
	User         string `json:"user"`
	Pws          string `json:"pws"`
	TimeOut      int    `json:"timeOut"`
	Tables       string `json:"tables"`
	MaxIdle      int    `json:"maxIdle"`
	MaxActive    int    `json:"maxActive"`
	IdleTimeout  int    `json:"idleTimeout"`
}
type Config_redis struct {
	Msg          string `json:"msg"`
	InstanceName string `json:"instanceName"`
	PassPort     string `json:"passPort"`
	Server       string `json:"server"`
	Db           int    `json:"db"`
}
type Config_mg struct {
	InstanceName string `json:"instanceName"`
	Addr         string `json:"addr"`
	IsMaster     bool   `json:"isMaster"`
	UserName     string `json:"userName"`
	Passport     string `json:"passport"`
	TimeOut      int    `json:"timeOut"`
	PoolLimit    int    `json:"poolLimit"`
	Databases    string `json:"databases"`
}
type GConfigObj struct {
	CkDB     Config_ck    `json:"ClickDB,omitempty"`  //大数据连接
	MongoDB  Config_mg    `json:"MongoDB,omitempty"`  //业务数据连接
	RedisAPI Config_redis `json:"RedisApi,omitempty"` //api用redis
}

var GConfig GConfigObj = GConfigObj{}

// 加载配置
func InitConfig(p string) error {
	tmp, err := ReadJsonF(p)
	if err != nil {
		panic("配置文件读取失败：" + err.Error())
		return err
	}
	tmpgc := GConfigObj{}
	err = json.Unmarshal(tmp, &tmpgc)
	if err != nil {
		panic("配置文件解析失败：" + err.Error())
		return err
	}
	GConfig = tmpgc
	return nil
}

// 读取json文件
func ReadJsonF(filename string) ([]byte, error) {
	tmp, err := ioutil.ReadFile(filename)
	if err != nil {
		panic("read json " + filename + " is error:")
		return nil, err
	}
	return tmp, nil
}
